<?php
/**
*Muestra la relacion del modelo Articulos con el resto de los modelos
*
*Clase Articulo que extiende del modelo
*
*@author pegudo
*@package models
*/
Class Articulo extends AppModel {
/**
*nombre de la clase
*@var string
*/
	var $name = 'Articulo';
	
	/*var $belongsTo = array
	(
		'Servicio' => array
		(
			'className' => 'Servicio',
			'conditions' => '',
			'order'   => '',
			'foreignKey' => 'servicio_alta'
		),
		'Servicio' => array
		(
			'className' => 'Servicio',
			'conditions' => '',
			'order'   => '',
			'foreignKey' => 'servicio_baja'
		)
	);*/
	
/**
*arreglo de los respectivos regex del modelo articulo
*@var array
*/
	/*var $validate = array
	(
		'nombre' => '/^[a-zA-Z\W\.\-\_\s]{4,50}$/i',
		'cantidad' => '/^[0-9]{0,7}$/i'
	);*/
	
/**
*arreglo de los campos que son uniques en la base de datos.
*@var array
*/
	var $unique = array 
	(
		'nombre'
	);
	
//funcion que valida antes de una funcion save
//si retorna true guarda sin problemas , si retorna false no guarda	
/**
*Funcion que valida antes de una funcion save
*
*Esta funcion retorna true si no existen problemas con los campos a guardar.
*False en caso contrario.
*Recorre el arreglo $unique y consulta en la base de datos si existe un registro
*con el campo $unique[] igual al data que se le pasa por parametro
*Es decir, retorna false si se intenta agregar un registro en donde el campo $unique[] ya 
*esta agregardo
*@return boolean
*@param
*/
	function validates()
	{
		foreach($this->unique as $campoUnique)
		{	
			//$this->name = 'Cliente'
			if (!empty($this->data[$this->name]))//entra si data no esta vacio
			{
				$valor = $this->data[$this->name][$campoUnique]; //valor del campo a encontrar
				//consultamos en la base de datos el registro
				$registro = $this->findAll(array($campoUnique => $valor));
				
				//resultado del registro
				//$registro['0'][$this->name][$campoUnique]  --> valor encontrado en la DB
				//si no es vacio significa que encontro uno y hay que invalidar el campo
				if (!empty($registro['0'][$this->name][$campoUnique]))
				{
					$valorIdDB = $registro['0'][$this->name]['id']; //id del registro encontrado
					//si no esta seteado coloca -1, esto es porque cuando se agrega el indice id no existe
					if(empty($this->data[$this->name]['id']))
						$this->data[$this->name]['id']='-1';
					$valorIdData = $this->data[$this->name]['id'];  //id del data
					if($valorIdDB != $valorIdData)
						$this->invalidate($campoUnique);//ejecuta tagErrorMsg('Empresa/usuario')
					else
						return true;
				}
			}
		}
	//-------------------------------------------------------------------------------------	
			$errors = $this->invalidFields();//devuelve los campos invalidos
			return count($errors) == 0;	//si retorna true => guarda, sino no guarda
	}	

	
}
?>
